package com.feishi.core.analytic.element;

import com.feishi.core.analytic.parser.PoParser;

/**
 * Created by caixq on 5/9 009.
 */
public abstract class AnalyticDataElement<T> extends AnalyticElement implements  AnalyticEncodeElement<T>{

    protected PoParser<T> parser;

    public PoParser<T> getParser() {
        return parser;
    }

    public void setParser(PoParser<T> parser) {
        this.parser = parser;
    }
    @Override
    public byte[] getBytes(Object o) {
        byte[] bytes=null;
        if(this.parser!=null){
            bytes= parser.getBytes((T) o);
        }else if(o instanceof  Byte){
            bytes= new byte[]{(byte) o};
        }else{
            bytes= (byte[])o;
        }

        return bytes;
    }

    @Override
    public Object getValue(byte[] bytes) {

        if(this.parser!=null){
            return parser.getValue(bytes);
        }else if(bytes==null){
            return new byte[0];
        }else if(bytes.length==1){
            return bytes[0];
        }else{
            return bytes;
        }
    }
}
